c++类的声明和对象的定义---10

时间:2023-02-16 11:01:03

原创博客:转载请标明出处:http://www.cnblogs.com/zxouxuewei/

类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,占用内存空间。

类的声明

类是用户自定义的类型,如果程序中要用到类,必须先进行声明,或者使用已存在的类(别人写好的类、标准库中的类等),C++语法本身并不提供现成的类的名称、结构和内容。

一个简单的类的定义:

    class Student{
//成员变量
char *name;
int age;
float score;
//成员函数
void say(){
printf("%s的年龄是 %d,成绩是 %f\n", name, age, score);
}
};

该例创建了一个Student类,它包含了3个成员变量和1个成员函数。

class是C++中的关键字,用于声明一个类;紧接 class 关键字之后的是我们自定义的类名 Student;由{ }包围的是类体。声明类时不能对成员变量进行初始化,只有在创建对象以后才能赋值。

类可以理解为一种新的数据类型,该数据类型的名称是 Student。与 char、int、float 等基本数据类型不同的是,Student 是一种复杂数据类型,可以包含基本类型,而且多了很多基本类型中没有的特性。

需要注意的是:在类声明的最后有一个分号(;),它是类声明的一部分,表示类声明结束了,不能省略。

创建对象

声明了 Student 数据类型之后,就可以用它来定义变量了,如

Student LiLei; //创建对象

该语句声明了一个名字为 LiLei、数据类型为 Student 的变量。这和:

int a; //定义整形变量

语句定义了一个整型变量表达的意思是类似的。而 LiLei 这个变量我们称之为 Student 类的对象。

在定义类的对象时,class 关键字可要可不要。但出于习惯我们通常都会省略掉class关键字,例如:

    class Student LiLei; //正确
Student LiLei; //同样正确

创建类的对象时,除了能定义单个变量以外,还可以定义一个数组或者指针。例如:

    Student all_student[];
Student *pointer;

第一条语句定义了一个 all_student 数组,该数据拥有100个元素,每个元素都是 Student 类型。第二条语句定义了一个 Student 类型的指针 pointer,该指针可以指向 Student 类型的变量(对象),用法和普通指针一样。

声明类的同时创建对象

和结构体(struct)类似,你可以先声明类,然后再创建对象,也可以在声明类的同时创建对象。如下所示:

    class Student{
//成员变量
char *name;
int age;
float score;
//成员函数
void say(){
printf("%s的年龄是 %d,成绩是 %f\n", name, age, score);
}
}stu1, stu2;

这个时候你也可以省略类名,直接创建对象。如下所示:

    class{
//成员变量
char *name;
int age;
float score;
//成员函数
void say(){
printf("%s的年龄是 %d,成绩是 %f\n", name, age, score);
}
}stu1, stu2;

直接定义对象,在C++中是合法的、允许的,但却很少用,也不提倡用。

一个完整的示例:

    #include <stdio.h>
//类可以在所有函数之外定义
class Student{
public: //类包含的变量
char *name;
int age;
float score;
public: //类包含的函数
void say(){
printf("%s的年龄是 %d,成绩是 %f\n", name, age, score);
}
};
int main(){
//创建对象
Student stu;
stu.name = "小明";
stu.age = ;
stu.score = 92.5f;
stu.say();
//定义指针
Student *pt_stu = &stu;
pt_stu->name = "李雷";
pt_stu->age = ;
pt_stu->score = ;
pt_stu->say();
return ;
}

运行结果:
小明的年龄是 15,成绩是 92.500000
李雷的年龄是 16,成绩是 80.000000

public 是C++中的关键字,用来修饰成员变量和成员函数,表示它们是公有的。我们将在下节详细讲解 public,这里只需要知道,只有
public 后面的成员变量和成员函数才能被创建的对象访问到。像本节开头的例子,没有使用 public,那么创建对象后就不能使用任何成员。

main 函数中首先创建了一个对象 stu,然后又定义了一个 Student 类型的指针变量。可以发现,和结构体(struct)类似,一个对象通过成员选择符”.“来访问成员变量和成员函数,而指针变量通过指针操作符”->“来访问成员。

下面在附上一段代码:

#include <iostream>
#include <string>
using namespace std; class _test_class_
{
private:
    string school = "Henan University of Science and Technology";
public:
    string name;
    char age;     template <typename _TYPE_DEFINE>
    _TYPE_DEFINE Test_function(const _TYPE_DEFINE &a,const _TYPE_DEFINE &b)
    {
        return a+b;
    }
    void Display(string name,int age)
    {
        cout <<"school :"<<school<<endl;
        cout <<"name :"<<name<<endl;
        cout <<"age  :"<<age<<endl;
    }
}; int main(int argc,const char* argv)
{
    class _test_class_ class1,class2;
    class1.name = "student1";
    class1.age  = 22;     class2.name = "student2";
    class2.age  = 33;     _test_class_*p;
    p = &class1;
    cout << "p-> "<< p->name<<endl;
    class1.Display(class1.name,class1.age);
    class2.Display(class2.name,class2.age);     return 0;
}

对象指针和结构体指针类似,不理解的同学请重温《C和指针》。

注意:对象指针指向的是一个具体的对象,而不是类。下面的写法是错误的:

    Student *pt;
pt = &Student;

c++类的声明和对象的定义---10的更多相关文章

  1. IOS基础之 &lpar;三&rpar; 类的声明和对象的创建

    一 OC类的声明和实现语法 1.接口的声明 @interface NewClassName: ParentClassName { 实例变量 ... } 方法的声明 ... @end //...表示省略 ...

  2. 你好,C&plus;&plus;(32) 类是对现实世界的抽象和描述 6&period;2&period;1 类的声明和定义

    6.2  类:当C++爱上面向对象 类这个概念是面向对象思想在C++中的具体体现:它既是封装的结果,同时也是继承和多态的载体.因此,要想学习C++中的面向对象程序设计,也就必须从“类”开始. 6.2. ...

  3. 关于C&plus;&plus;的变量和类的声明和定义

    什么是变量?变量或者叫对象,是一个有具名的.可以供程序操作的存储空间.这里具名是指变量是有名字的,可供操作是指能进行加减乘除或者输入输出等操作,存储空间则是指有一块属于它的内存空间. 为了便于说明,标 ...

  4. python类内init外声明的属性与init内声明的对象属性的访问和操作区别

    python类内init外声明的属性与init内声明的对象属性的访问和操作区别(面试题) 1.在ipython中输入以下代码,其输出会是什么? In [1]: class ClassOut: ...: ...

  5. 定义类、System&period;Object对象、构造函数与析构函数、抽象类与静态类

    一.类定义 class MyClass { //类成员 } 1.访问级别 默认访问级别为internal(内部类),也可以是public(公共类) internal(内部类):当前项目中的代码才能访问 ...

  6. 鸡啄米:C&plus;&plus;编程之十三学习之类与对象,类的声明,成员的访问控制

    1. 本次学习鸡啄米课程第13篇,把比较重要的学习记录下来,以敦促自己更好的学习.推荐他们的网址学习:http://www.jizhuomi.com/school/c/97.html 2. 在面向过程 ...

  7. java问题:类的定义,对象的定义?

    java问题:类的定义,对象的定义? 类是一组数据和函数的集合,只是抽象的概念,它的作用就是生成对象,它生成对象后,就为这个对象分了一块存储区,类可以生成无限多个对象,每个对象都有自己的存储区,在类里 ...

  8. 201671010142 java类与对象的定义及使用

    通过这章学习,了解到面向对象程序设计.面向对象的程序设计是有对象组成的,每个对象对用户公开的特定功能部分和隐藏的实现部分.有类构造对象的过程称为创建类的实例.实现封装的关键在于绝对不能让类中的方法直接 ...

  9. Java泛型:泛型的定义(类、接口、对象)、使用、继承

    地址   http://blog.csdn.net/lirx_tech/article/details/51570138 1. 设计泛型的初衷: 1) 主要是为了解决Java容器无法记忆元素类型的问题 ...

随机推荐

  1. uboot make xxx&lowbar;config与make的过程分析

    一直很想捋清楚make xxx_config,make 的执行过程. 在uboot的makefile中有这样的话: %_config::unconfig @$(MKCONFIG) -A $(@:_co ...

  2. 控制台(Console)报错:java&period;io&period;IOException&colon; Broken pipe

    控制台(Console)输出: java.io.IOException: Broken pipe at sun.nio.ch.FileDispatcherImpl.write0(Native Meth ...

  3. webBroser获取cookie

    //取当前webBrowser登录后的Cookie值 [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError ...

  4. 【C&plus;&plus;】函数指针宏定义

    看耗子叔文章学习虚函数表(http://blog.csdn.net/haoel/article/details/1948051)的时候被例子的第一句惊到了 typedef void(*Fun)(voi ...

  5. priority&lowbar;queue C&plus;&plus;

    三种优先队列定义方法:T_T 内部原理以后补..... priority_queue<int> qi;//普通的优先级队列,按从大到小排序 struct Node { friend boo ...

  6. Selenium如何实现dropbar移动

    遇到这个拖拽的dropbar,如何实现呢,, 经过网上查找,可以用Action的方式实现或者js来控制 原理:移动按钮的同时,数字也随着变化 解决方法:1.最简单的就是直接在文本框输入相应的数字 2. ...

  7. Windows 8 动手实验系列教程 实验8:Windows应用商店API

    动手实验 实验 8: Windows应用商店API 2012年9月 简介 编写Windows应用商店应用最令人瞩目的理由之一是您可以方便地将它们发布到Windows应用商店.考虑到世界范围内目前有超过 ...

  8. DAO层设计Junit测试

    DAO层的设计: 在实际的开发中有一种项目的程序组织架构方案叫做MVC模式. MVC模式就是按照程序的功能将它们分成三层,分别是Modle层 (模型层).View(显示层).Controller(控制 ...

  9. SqlServer存储过程及函数

    存储过程和函数类似于Java中的方法. ⒈存储过程 一组预先编译好的sql语句的集合,理解成批处理语句. 好处: ①提高代码的重用性 ②简化操作 ③减少了编译次数并且减少了和数据库服务器的连接次数,提 ...

  10. python面向对象高级:Mixin多重继承

    继上一篇学习笔记:python面向对象的继承与多态,本篇就Mixin扩展类的方法写下学习笔记 Mixin Mixin编程是一种开发模式,是一种将多个类中的功能单元的进行组合的利用的方式,这听起来就像是 ...