C++中定义个Class Student{ public: age;};
1. 创建对象时, Student Stu; 则视为创建了一个 Student 型的变量 Stu。 访问类中的成员使用 Stu.age = 1;
也可以创建指针型。Student * st = &Stu; 这种创建的对象存储在栈中。
2.若在堆中创建则用 Student *Stu = new Student. 成员访问用 Stu->age = 1; 和结构体的访问相似。
//------------------------------------------------------------------------------------------------------------------------------------------------
成员变量大都以m_
开头,这是约定成俗的写法,不是语法规定的内容。以m_
开头既可以一眼看出这是成员变量,又可以和成员函数中的形参名字区分开。
这种将成员变量声明为 private、将部分成员函数声明为 public 的做法体现了类的封装性。所谓封装,是指尽量隐藏类的内部实现,只向用户提供有用的成员函数。
声明为 private 的成员和声明为 public 的成员的次序任意,既可以先出现 private 部分,也可以先出现 public 部分。如果既不写 private 也不写 public,就默认为 private。
构造函数:
- classStudent{
- private:
- char *m_name;
- int m_age;
- float m_score;
- public:
- //声明构造函数
- Student(char*name,int age,float score);
- //声明普通成员函数
- void show();
- };
- //定义构造函数
- Student::Student(char*name,int age,float score){
- m_name = name;
- m_age = age;
- m_score = score;
- }
- int main(){
- //创建对象时向构造函数传参
- Student stu("小明",15,92.5f);
- stu.show();
- //创建对象时向构造函数传参
- Student *pstu= new Student("李华",16,96);
- pstu -> show();
- return0;
- }
- 构造函数的调用是强制性的,一旦在类中定义了构造函数,那么创建对象时就一定要调用,不调用是错误的。如果有多个重载的构造函数,那么创建对象时提供的实参必须和其中的一个构造函数匹配;反过来说,创建对象时只有一个构造函数会被调用。
Student stu()
或Student stu
,在堆上创建对象可以写作Student *pstu = new Student()
或Student *pstu = new Student
,它们都会调用构造函数 Student()。