`
kmplayer
  • 浏览: 508645 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于类的一些语法:

阅读更多
所谓"书越读越薄",这话说得真是有道理.
最近频繁面试,不得已重温了下primer.

1,C++语言设计的主要目标:允许程序员定义自己的类,它们用起来和内置类型一样容易直观.

2,在普通的非const成员函数中,this的类型是T * const,即:this本身不能改变.

3,如果返回类型使用类定义的类型,则必须使用完全限定名.
例如:
class Screen
{
public:
    typedef std::string::size_type index;
    index get_cursor() const;
};
inline Screen::index Screen::get_cursor() const //这里index
{
    return cursor;
}

4,构造函数不能声明为const.

5,关于隐式类型转换
(1)可以用单个实参来调用的构造函数定义从形参类型到该类类型的一个隐式转换.

(2声明时使用关键字explicit抑制由构造函数定义的隐式转换.
注:explicit只能用于声明上.

6,static成员函数没有this形参,可以直接访问所属类的static成员,但不能直接使用非static成员.
static成员不是任何对象的组成部分,所以static成员函数不能被声明为const.

7,使用类的static成员的优点:
(1)作用域在类中,可以避免与其他类的成员或全局对象名字冲突.
(2)可以实施封装,static成员可以是私有成员
(3)static成员是与特定类关联的.

8,static关键字只能用于类体内部的声明中.

9,static数据成员必须在类定义体的外部定义(正好一次).
最好的做法:将static数据成员的定义放在包含类的非内联函数定义的文件中.

特别注意:只有const static数据成员可以在声明时初始化,但是仍然必须在类的定义体外定义一次.

如:
class Account
{
private:
    static const int period = 30; // 声明和初始化
    double daily_tbl[period]; // ok: period is constant expression
};
const int Account::period; //定义

static数据成员的类型可以是该成员所属的类型:
class Bar
{
public:
    // ...
private:
    static Bar mem1; // ok
    Bar *mem2;       // ok
    Bar mem3;        // error
};

static数据成员可以用作默认实参.
class Screen
{
public:
    // bkground refers to the static member
    // declared later in the class definition
    Screen& clear(char = bkground);
private:
    static const char bkground = '#';
};











分享到:
评论

相关推荐

    java8语法详解_Java8_java_java8语法::_源码

    在本篇文章中,我们将深入探讨Java 8中的关键语法改进,包括函数式编程、Lambda表达式、Stream API、日期与时间API、默认方法以及方法引用来帮助你更好地理解和应用这些新特性。 1. **Lambda表达式**: Lambda...

    英语语法英语语法英语语法

    英语语法详解 英语语法是英语学习的基础,对英语学习者的重要性不言而喻。本文将从名词的角度对英语语法进行详细的介绍,涵盖名词的分类、名词复数的规则变化等重要知识点。 1. 名词的分类 名词可以分为专有名词...

    Linux命令笔记

    1:ls 显示文件目录 语法:ls 选项[-ald][文件或目录] 2:cat 显示文件内容(内容少适合) 语法:cat[文件名] 3:tac 显示文件内容 语法:tac[文件名] 4:more 分页显示文件内容(只能往下翻页,不能往上反) 语法:more...

    实验二:Java语法基础

    本_experiment_总结了 Java 的一些基本的语法知识,包括变量和常量的使用、运算符与表达式的使用、选择、循环、分支语句的使用等。实验内容包括输入一个学生的成绩,给出相应的等级、编写一个程序从键盘输入 5 个...

    类C语法脚本解释器

    类C语法脚本解释器是一种程序,它能够读取并执行使用类似C语言语法的脚本。这样的解释器使得程序员可以使用他们熟悉的C语言结构来编写动态执行的脚本,而无需每次都进行编译和链接步骤。这在快速原型开发、自动化...

    vb语法高亮类

    8. **错误提示**:一些高级的语法高亮类还会包含简单的语法检查功能,通过颜色标记潜在的语法错误,如未声明的变量或不匹配的括号。 9. **多语言支持**:虽然这里提到的是VB,但一个强大的语法高亮类应该能够处理...

    2021届辽宁省高二上学期英语期末试题分类汇编:语法填空专题及答案.doc

    2021届辽宁省高二上学期英语期末试题分类汇编:语法填空专题及答案.doc

    JAVA语法总结 - 内部类

    这些内部类之间存在一些共性: - **编译后的文件格式**:内部类最终会被编译成独立的`.class`文件,文件名通常为外部类名称加上`$`符号和内部类名称。 - **访问控制**:内部类可以直接访问外部类的所有成员(包括...

    伪类选择器的使用和语法

    伪类选择器的使用和语法 摘要:本文将详细介绍伪类选择器的使用和语法,包括伪类选择器的作用、语法、案例演示和注意事项等。 一、伪类选择器的作用 伪类选择器是一种特殊的选择器,可以选中某些元素,并且可以...

    用于Java程序的抽象语法树类Abstractyntaxreelassesororking1

    在Java程序中,AST类用于表示程序的语法结构,使得我们可以对代码进行各种操作,如静态分析、重构或代码质量检查。CodeQL提供了一系列的类来支持这些操作,这些类主要分为两类:Statement类和Expression类。 1. ...

    JDBC 访问各种数据库 URL 语法(总结篇)

    **URL 语法:** ``` url=jdbc:firebirdsql:[HOST_NAME]/[PORT:][FULL_PATH_TO_DATABASE_FILE] ``` **驱动类:** ```java driver=org.firebirdsql.jdbc.FBDriver ``` **示例代码:** ```java Class.forName("org....

    类pascal语法分析程序

    类pascal语法分析程序,东华大学计算机系的作业,可以看看

    kotlin语法:学习Kotlin语法

    Kotlin以其简洁、易读的语法深受开发者喜爱,并在近年来逐渐成为Android开发的首选语言。下面我们将深入探讨Kotlin的语法特性。 1. **基础语法** - **变量声明**:Kotlin支持var(可变)和val(不可变)两种类型的...

    北邮编译原理实验二:语法分析程序的设计与实现

    在编译原理中,语法分析是编译器设计的关键阶段之一,主要任务是根据语法规则解析源代码,构建抽象语法树(AST),为后续的语义分析和代码生成提供结构化信息。本实验——“北邮编译原理实验二:语法分析程序的设计...

    最全的SqL语法大全

    SqL语法主要分为三大类:数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)。 数据定义语言(DDL) 数据定义语言(DDL)用于定义数据库的结构,包括创建、修改和删除数据库对象的操作。SqL语法中的...

    c语法分析器

    7. `c_parser.h`, `c_main.h`, `c_lexer.h`: 这些是头文件,包含了对应源文件的函数声明、类定义和其他接口信息,方便其他文件进行引用和调用。 在不支持预处理和不解析预处理符号`#`的情况下,这个C语法分析器只能...

    java检查sql语法是否正确

    在使用`QueryRunner`时,我们可以通过捕获`SQLException`来检查SQL语法: ```java import org.apache.commons.dbutils.QueryRunner; import org.apache.commons.dbutils.handlers.ScalarHandler; try { Query...

    关于jsp语法和练习

    以下是一些关于JSP语法和练习的关键知识点: 1. **读取Cookie**: JSP中,要获取HttpServletRequest对象中的所有Cookie,应使用`request.getCookies()`方法。这个方法返回一个Cookie数组,包含了请求中携带的所有...

    LL(1)语法分析器代码java编译原理,带注释,可运行借鉴.pdf

    4. 分析语法:根据语法规则,分析栈中的符号,并输出解析结果。 5. 重复步骤 3-4:直到栈为空或输入字符串结束。 语法规则 该代码实现了以下语法规则: * E -> TP(E 产生式) * P -> +TP(P 产生式) * T -> FT'...

    php实现简单的源码语法高亮函数类.zip

    描述中提到,这个函数类设计得相对简单,可能无法对所有语法进行高亮。这是因为不同的编程语言有不同的语法规则,而一个简单的实现可能只覆盖了基础的部分。例如,它可能只能处理常见的PHP关键字、变量、字符串和...

Global site tag (gtag.js) - Google Analytics