广州市黄埔区建设局网站,展厅设计作品欣赏案例,如何制作app应用,网站开发基本流程ppt目录
一、C权限方面的问题
1.访问权限
2.继承机制
二、Cconst引用
const引用有以下几个特点
临时对象引用
常量引用成员变量 二、c引用空间相关问题
三.auto 一、C权限方面的问题
【C入门】访问权限管控和继承机制详解_权限继承功能-CSDN博客文章浏览阅读840次。(2)但…
目录
一、C权限方面的问题
1.访问权限
2.继承机制
二、Cconst引用
const引用有以下几个特点
临时对象引用
常量引用成员变量 二、c引用空间相关问题
三.auto 一、C权限方面的问题
【C入门】访问权限管控和继承机制详解_权限继承功能-CSDN博客文章浏览阅读840次。(2)但是在派生类还是可以调用基类的同名成员的可以使用指定域名的方法父类::成员显示的指定要调用父类的成员而不是派生类的成员_权限继承功能https://blog.csdn.net/weixin_42031299/article/details/127342114
C 中的访问权限Access Specifiers管控和继承机制是面向对象编程的重要概念之一。通过访问权限和继承可以控制类成员的可见性和访问级别。
1.访问权限 C 提供了三种访问权限公有public、私有private和保护protected。它们用于限制类成员的可见性和访问级别。 默认情况下类的成员是私有的。我们可以使用访问权限来控制哪些成员对外部可见哪些成员对外部隐藏。 例如 公有public公有成员在类的内部和外部都是可见的可以被任何代码访问。私有private私有成员只能在类的内部访问外部无法直接访问私有成员。保护protected保护成员在类的内部和子类中可见但在外部不可直接访问。 class MyClass {
public:int publicVar; // 公有成员变量void publicFunc(); // 公有成员函数private:int privateVar; // 私有成员变量void privateFunc(); // 私有成员函数protected:int protectedVar; // 保护成员变量void protectedFunc(); // 保护成员函数
};2.继承机制 C 中的继承机制允许一个类称为派生类或子类从另一个类称为基类或父类继承属性和行为。 继承可以通过关键字 class 或 struct 来定义。 例如 公有继承public inheritance派生类继承了基类的公有成员和保护成员但私有成员不可直接访问。私有继承private inheritance派生类继承了基类的公有成员和保护成员但都变为私有成员。保护继承protected inheritance派生类继承了基类的公有成员和保护成员但都变为保护成员。 // 基类
class BaseClass {
public:int publicVar;void publicFunc();private:int privateVar;void privateFunc();protected:int protectedVar;void protectedFunc();
};// 公有继承
class DerivedClass : public BaseClass {// DerivedClass 可以访问 BaseClass 的公有成员和保护成员
};// 私有继承
class DerivedClass : private BaseClass {// DerivedClass 可以访问 BaseClass 的公有成员和保护成员但都变为私有成员
};// 保护继承
class DerivedClass : protected BaseClass {// DerivedClass 可以访问 BaseClass 的公有成员和保护成员但都变为保护成员
};通过继承派生类可以获得基类的属性和行为并且可以在派生类中添加新的成员或修改继承的成员。
二、Cconst引用
在C中const引用是指对常量进行引用的一种方式。通过使用const修饰符来声明引用可以确保被引用对象在引用期间不会被修改。
const引用有以下几个特点
对常量引用const引用主要用于传递常量参数给函数防止函数内部对参数进行修改。例如
void printValue(const int value) {// value是一个const引用不能在函数内部修改它cout Value: value endl;
}临时对象引用
const引用还可以绑定到临时对象即右值上。这种用法可以避免在使用临时对象时进行不必要的拷贝构造。例如
const int result getSum(3, 4);常量引用成员变量
在类中可以使用const引用作为成员变量的类型以确保该成员变量在对象的整个生命周期内都不能被修改。例如
class MyClass {
private:const int constantRef;
public:MyClass(const int value) : constantRef(value) {}
};需要注意的是const引用只能绑定到具有相同或更长生命周期的对象上而不能绑定到临时对象的非const引用或非const指针上。 二、c引用空间相关问题 在 C 中引用不开辟空间。引用不是一个对象它只是已存在的变量或对象的别名。引用本身不占用内存它只是一个已存在对象的别名或昵称。引用变量在内存中只是原变量的另一个名称所以对引用变量的任何操作都会影响到原变量。
因为引用只是一个别名所以我们在创建引用时必须将其初始化成一个已经存在的对象否则会导致编译错误。同时在使用引用时也要注意如果被引用的对象被销毁或释放了那么该引用就会成为悬空引用dangling reference访问它会引发未定义行为的错误。因此我们应该始终确保引用指向的对象在引用生命周期内都是有效的。
需要注意的是引用和指针虽然有相似之处但二者之间存在一些重要的区别。指针是一个实际的对象它存储了一个地址值指向一个具体的内存位置而引用只是一个别名没有实际的对象来支持它。因此我们可以对指针进行运算、赋值等操作而对于引用则不能进行这些操作。
总之在 C 中引用不开辟空间它只是一个已存在对象的别名或昵称对引用进行的任何操作都会直接影响到原变量。 当我们创建一个引用时它必须初始化为一个已经存在的对象或变量。下面是一些关于引用的示例
int main() {int num 10;// 创建一个整型引用并将其初始化为numint ref num;// 修改引用的值会直接修改原变量的值ref 20;std::cout num: num std::endl; // 输出num: 20// 创建一个常量引用它不能修改被引用的对象的值const int constRef num;// constRef 30; // 错误不能修改常量引用// 引用作为函数参数可以方便地传递和修改变量的值void increment(int value) {value;}int value 5;increment(value);std::cout value after increment: value std::endl; // 输出value after increment: 6return 0;
}在上面的示例中我们创建了一个整型变量 num 和一个与之关联的引用 ref。通过修改 ref 的值我们实际上修改了 num 的值。
另外我们还创建了一个常量引用 constRef它不能修改被引用的对象的值。
最后我们定义了一个函数 increment它以引用作为参数。这使得我们可以直接修改传递给函数的变量的值而无需使用指针或返回值。
这些示例展示了引用在C中的使用方式它们提供了一种方便而灵活的方式来操作和传递变量。 三.auto
在 C11 标准中引入了 auto 关键字用于自动推导变量的类型。auto 关键字可以使代码更简洁、可读性更高并且可以轻松地处理复杂的类型声明。
auto 关键字的使用方法如下
auto 变量名 表达式;在这里变量名是我们要定义的变量的名称表达式是一个用于初始化变量的表达式。auto 关键字会根据表达式的类型来推断变量的类型从而省略了我们手动指定类型的步骤。
例如我们可以使用 auto 来推导一个整数类型的变量
auto i 42; // 推导为 int 类型我们还可以使用 auto 来推导一个 std::vectorint 类型的变量
std::vectorint v {1, 2, 3};
auto vec v; // 推导为 std::vectorint 类型auto 关键字的好处在于我们不必手动指定变量类型这样可以简化代码并提高可读性。此外auto 还可以处理一些比较复杂的类型声明例如函数指针和 lambda 表达式等。这些类型声明通常会很冗长使用 auto 可以避免这种情况。
需要注意的是auto 关键字不能用于函数参数、类成员变量、非静态局部变量等场景。此外在使用 auto 推导变量类型时要注意表达式的类型以避免类型推导错误。