C++类的入门

发布时间:2024年01月23日

C++类

一:类的简介:

C++的类是一种用户定义的数据类型,用于封装数据和方法。它是面向对象编程的基本概念,允许程序员将数据和操作数据的方法组合在一起。类可以包含成员变量和成员函数,用于描述对象的属性和行为。通过类的实例化,可以创建对象并使用对象的方法操作数据。类是C++中面向对象编程的基础,能够提高代码的可重用性和可维护性。
从功能上来看,类有点类似于结构体,但是它们有一定的区别,主要表现为:
1.默认的不同:
c++中结构体默认为类的public属性,即允许外部使用,而类在不声明时,默认为private属性,即仅内部可用。
2.功能的不同:
类可以有访问控制修饰符,如public、private和protected,而结构体不支持。

二:类的定义:

class p {//类名
public:
?
private:
};
  1. public:public成员在类的外部可以被访问。这意味着任何对象都可以访问public成员变量和成员函数。在类的外部,可以直接使用对象名和成员名来访问public成员。
  2. private:private成员只能在类的内部访问,外部的代码不能直接访问private成员。只有类的成员函数可以访问private成员。这样可以保护数据,只允许类的内部进行操作,避免外部代码对类的数据进行不当的修改。

三:类的初始化:

3.1.在C++11及更高版本,可以在定义时直接对public成员进行初始化:
#include <iostream>
#include <string>
using namespace std;
class p {
public:
 ? ?int name;
 ? ?int age;
private:
 ? ?
};
int main() {
 ? ?p person1 = { 1,2 };
 ? ?cout << person1.age;
 ? ?return 0;
}
注意:
1.系统会按照顺序对public成员进行赋值,{}内部数字不能超过public的成员数目,但是可以少于,少于自动补0。
2.外部无法访问到private,所以,该操作仅仅对public成员有效。
3.2:利用'.'直接访问成员或成员函数进行初始化:
#include <iostream>
#include <string>
using namespace std;
class p {
public:
 ? ?int name;
 ? ?int age;
 ? ?void setscore(int x) {
 ? ? ? ?score = x;
 ?  }
?
private:
 ? ?int score;
};
int main() {
 ? ?p person1;
 ? ?person1.name = 1;
 ? ?person1.age = 18;
 ? ?person1.setscore(100);
 ? ?cout << person1.age;
 ? ?return 0;
}
利用这种方法进行初始化较1更加方便,且可以通过这种方法对private成员进行赋值。同理,也可以用这种方法输出private中成员的值:
#include <iostream>
#include <string>
using namespace std;
class p {
public:
 ? ?int name;
 ? ?int age;
 ? ?void setscore(int x) {
 ? ? ? ?score = x;
 ?  }
 ? ?int getscore(void){
 ? ? ? ?return score;
 ?  }
private:
 ? ?int score;
};
int main() {
 ? ?p person1;
 ? ?person1.name = 1;
 ? ?person1.age = 18;
 ? ?person1.setscore(100);
 ? ?cout << person1.getscore();
 ? ?return 0;
}
3.3:利用类的构造函数进行初始化:
#include <iostream>
#include <string>
using namespace std;
class p {
public:
 ? ?p(string name, int age) :name_(name), age_(age) {
 ? ? ? ?cout << name_ << age_;
 ?  }
private:
 ? ?int score;
 ? ?int age_;
 ? ?string name_;
};
int main() {
 ? ?p person1("shelly", 18);
 ? ?return 0;
}
当然也可以这样写:
#include <iostream>
#include <string>
using namespace std;
class p {
public:
 ? ?p(string name, int age){
 ? ? ? ?name_ = name;
 ? ? ? ?age_ = age;
 ? ? ? ?cout << name_ << age_;
 ?  }
private:
 ? ?int score;
 ? ?int age_;
 ? ?string name_;
};
int main() {
 ? ?p person1("shelly", 18);
 ? ?return 0;
}
还可以这样:
#include <iostream>
#include <string>
using namespace std;
class p {
public:
 ? ?p(string name, int age){
 ? ? ? ?name_ = name;
 ? ? ? ?age_ = age;
 ? ? ? ?cout << name_ << age_;
 ?  }
private:
 ? ?int score;
 ? ?int age_;
 ? ?string name_;
};
int main() {
 ? ?p person1 = { "xlx",18 };
 ? ?return 0;
}
注意:
1.该构造函数应该在类的public部分,才能被外部使用。
2.构造函数是没有类型的。
3.构造函数的名称与类名称相同。
4.构造函数与函数一样,不能像第1种方法一样,少于参数的数量,否则会报错。且存在构造函数时,用{}进行初始化,默认是使用构造函数,而不是方法1。
文章来源:https://blog.csdn.net/2301_80073794/article/details/135785070
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。