本文深入探讨了C++中的类与对象概念,包括构造函数的作用及使用场景、成员函数的声明方式、数据抽象和封装的基本原理,以及友元机制和static成员的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

析构函数的存在,意味着构造函数,赋值函数的存在.

在C++中,用类类定义自己的抽象数据类型,通过定义类型来对应所要解决的问题中的各种概念,引出面向对象的方法。

简单来说,类就是定义了一个新的类型和作用域。

构造函数:

创造一个类类型的对象时,编译器会自动使用一个构造函数来初始化对象。构造函数初始化成员类表一般在以下情况必须用到:

(1)类的成员是常量成员初始化;

(2)类的成员是对象成员初始化,而该对象没有无参构造函数

(3)类的成员为引用时。

构造函数不能声明为const

成员函数:

将const加在形参表之后,就可以将成员函数声明为常量,不能改变其所操作的对象数据成员。如: int fun()const

数据抽象是一种依赖于接口与实现分离的编程技术,,类设计者关心如何实现类,使用类的程序员仅需了解这些类可以做什么,而不必了解如何工作。

封装是一项将低层次的元素组合起来的新的,高层次实体的技术,封装细节,函数是封装的一种表示。

 

友元机制允许一个类将对其非公有成员的访问权授予指定的函数或类。友元的声明以friend开头,只出现在类的内部的任何地方。也可以只使其他类的成员函数成为友元。这个友元类在类外,其实也就是一个普通的类。

static:

类中定义的
static成员,独立于该类的任意对象而存在,static成员函数没有this形参,可以直接访问所属类的static 成员,但不能直接使用非static成员。不能声明为const,不能被声明为虚函数。static数据成员不是任何对象的组成部分,所以她的类型可以是该成员所属的类类型,但是非static类型成员被限定声明为自身类对象的指针或引用。

如:

class A{

public: static A a1;

A a2;//error

A *a3;//OK

}

static成员的使用与其他成员没有什么区别,除了,他是可以使用类作用域。

static数据成员在类内声明,但一定要在类体外定义。static成员函数不能直接使用非STATIC成员函数,可以直接使用static成员函数。在类外定义时,不需要加static

附上测试的代码,很乱:

 

#include<iostream>
using namespace std;
class A{

private:
 friend class B;
 //static A a1;
 //static char* a1;
 
public:
 static char* getA();
 
char *a;
static char* a1;
};
char* A::a1="s";
char* A::getA(){
a1="s";
return a1;
}
class B{
public:
  char * get(){
  //(A::a1).a1=NULL;//ERROR
  A::a1="s";//error
  A aa;
 // aa.a="s";//不能是''
 // return "s";
   aa.getA();
   return "s";
 }
};
int main()
{
 B b;
//A::a1="s";
 
 
return 0;
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值